import axios from "axios";

import { tokenStore } from "@/store";
import router from "@/router";
import { ElMessage } from "element-plus";

// 创建一个Axios的实例(对象)
const service = axios.create({
    //baseURL: 'http://192.168.110.108:5173/api',   // url的前缀
    baseURL: 'http://stl.bobzyh.top/api',   // url的前缀
    timeout: 1000,                      // 超时时间，单位毫秒
})

// 请求拦截器
service.interceptors.request.use(request=>{
    // 请求发送前的回调
    // 统一的对所有的请求做一些操作
    // 每一个请求前，将Token传递过去
    request.headers.token = tokenStore().token; // 从Pinia中取出来

    return request;
}, error=>{
    // 请求发送出错的回调
    return Promise.reject(error);
});

// 响应拦截器
service.interceptors.response.use(response=>{
    if (response.headers.token) {
        tokenStore().update(response.headers.token);
    }
    return response;
}, error=>{
    if (!error.response) return Promise.reject(error);; 
    if (error.response.status == 404){
        console.log("页面找不着！！");
    } else if (error.response.status == 403){
        // 权限不足
        ElMessage({
            message: error.response.data.msg,
            type: 'error',
            offset: 250,
        });
    } else if (error.response.status == 401) {
        // 用户没登录，跳转到登录页面
        router.push("/login");
    } else {
        // 响应出错的回调
        return Promise.reject(error);
    }
})

// 暴露
export default service;